package com.tf.pemporaryfood.service.serviceImpl;

import com.tf.pemporaryfood.service.UploadService;
import com.tf.pemporaryfood.util.ApiResult;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 上传文件service
 *
 * @author Young genius
 * @date 2021年06月10日 15:21
 */
@Service
public class UploadServiceImpl implements UploadService {
    /**
     * 上传商品图片
     *  可以上传多个文件，将存储在服务器的固定文件夹下，上传的所有文件都会被重命名
     * @param request
     * @return List<String> 返回的是上传的所有文件的绝对路径
     */
    @Override
    public ApiResult<List<String>> uploadImageOfGoods(HttpServletRequest request) {
        List<String> data = new ArrayList<>(16);
        List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file");
        //服务器存储文件的位置
        String filePath = "/Users/aa/workspace/temp/";
        for (int i = 0; i < files.size(); i++) {
            MultipartFile file = files.get(i);
            if (file.isEmpty()) {
                return ApiResult.error(500,"上传第"+ i++ +"个文件时出错");
            }
            //获取到后缀名
            String fileSuffixName = file.getOriginalFilename().substring(0,file.getOriginalFilename().indexOf("."));
            long currentTime = System.currentTimeMillis();
            //文件存储的位置
            String fileName = filePath + currentTime + fileSuffixName;
            data.add(fileName);
            File dest = new File(fileName);
            try {
                file.transferTo(dest);
                System.out.println("第" + (i + 1) + "个文件上传成功");
            } catch (IOException e) {
                return ApiResult.error(500,"上传第"+ i++ +"个文件时出错");
            }
        }

        return ApiResult.ok(data);
    }
}
